import Cookie from 'js-cookie'

export default{
    // 共享数据
    state:{
        isCollapse:false, // 用于控制菜单控制还是收起
        // 面包屑数据
        tabsList:[
            // {
            //     path: '/layout/home',
            //     name: 'home',
            //     label: '首页',
            //     icon: 's-home',
            //     url: 'Home/Home'
            // }
        ],
        // 权限菜单
        menu: [],
        // 用户头像地址
        image:'',
        // 创建用户的时间
        time:'',
        // 用户的身份
        status:'',
        // 用户名称
        username:''
    },
    // 修改共享数据只能通过mutations实现，必须是同步请求
    mutations:{
        // 修改菜单展开收起的方法
        collapseMenu(state){
            state.isCollapse = !state.isCollapse;
        },
        // 更新面包屑数据
        selectMenu(state,item){
            if(item.name !=='home'){
                // 如果面包屑中存在该name，那么index!=1，否则index = -1
              const index =  state.tabsList.findIndex(i =>i.name == item.name)
            //  如果不存在
              if(index === -1){
                state.tabsList.push(item)
              }
            }
        },
        // 删除指定的tag数据
        closeTag(state,item){
            // 获取要删除的索引
            const index = state.tabsList.findIndex(val=>val.name===item.name);
            // 从当前索引开始删除，删除一个
            state.tabsList.splice(index,1);
        },
        // 设置menu的数据
        setMenu(state,val){
            state.menu = val;
            // 存在cookie中在页面刷新时，数据不会丢失
            Cookie.set('menu',JSON.stringify(val))
        },
        // 动态注册路由
        addMenu(state,router){
            // 判断缓存中是否有数据
            if(!Cookie.get('menu')) return;
            const menu = JSON.parse(Cookie.get('menu'));
            // 更新数据
            state.menu= menu;
            // 组装动态路由的数据
            const menuArray = []
            menu.forEach(item => {
                // 如果当前路由有子菜单
                if(item.children){
                    item.children =  item.children.map(item=>{
                        item.component = () =>import(`../views/${item.url}`);
                        return item;
                    })
                    menuArray.push(...item.children);
                }else{
                    item.component = () => import(`../views/${item.url}`);
                    menuArray.push(item);
                }
            });
            console.log("@menuArray",menuArray);
            // 路由的动态添加
            menuArray.forEach(item=>{
                // 将路由添加到主路由中
                router.addRoute('layout',item);
            })
        },

        setImage(state,val){
            state.image = val;
        },
        setTime(state,val){
            state.time = val
        },
        setStatus(state,val){
            state.status = val
        },
        setUsername(state,val){
            state.username = val
        }
    },
  
}